home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / bootmem.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  3KB  |  97 lines

  1. /*
  2.  * Discontiguous memory support, Kanoj Sarcar, SGI, Nov 1999
  3.  */
  4. #ifndef _LINUX_BOOTMEM_H
  5. #define _LINUX_BOOTMEM_H
  6.  
  7. #include <asm/pgtable.h>
  8. #include <asm/dma.h>
  9. #include <linux/cache.h>
  10. #include <linux/init.h>
  11. #include <linux/mmzone.h>
  12.  
  13. /*
  14.  *  simple boot-time physical memory area allocator.
  15.  */
  16.  
  17. extern unsigned long max_low_pfn;
  18. extern unsigned long min_low_pfn;
  19.  
  20. /*
  21.  * highest page
  22.  */
  23. extern unsigned long max_pfn;
  24.  
  25. /*
  26.  * node_bootmem_map is a map pointer - the bits represent all physical 
  27.  * memory pages (including holes) on the node.
  28.  */
  29. typedef struct bootmem_data {
  30.     unsigned long node_boot_start;
  31.     unsigned long node_low_pfn;
  32.     void *node_bootmem_map;
  33.     unsigned long last_offset;
  34.     unsigned long last_pos;
  35.     unsigned long last_success;    /* Previous allocation point.  To speed
  36.                      * up searching */
  37. } bootmem_data_t;
  38.  
  39. extern unsigned long __init bootmem_bootmap_pages (unsigned long);
  40. extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend);
  41. extern void __init free_bootmem (unsigned long addr, unsigned long size);
  42. extern void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal);
  43. #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
  44. extern void __init reserve_bootmem (unsigned long addr, unsigned long size);
  45. #define alloc_bootmem(x) \
  46.     __alloc_bootmem((x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
  47. #define alloc_bootmem_low(x) \
  48.     __alloc_bootmem((x), SMP_CACHE_BYTES, 0)
  49. #define alloc_bootmem_pages(x) \
  50.     __alloc_bootmem((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
  51. #define alloc_bootmem_low_pages(x) \
  52.     __alloc_bootmem((x), PAGE_SIZE, 0)
  53. #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
  54. extern unsigned long __init free_all_bootmem (void);
  55.  
  56. extern unsigned long __init init_bootmem_node (pg_data_t *pgdat, unsigned long freepfn, unsigned long startpfn, unsigned long endpfn);
  57. extern void __init reserve_bootmem_node (pg_data_t *pgdat, unsigned long physaddr, unsigned long size);
  58. extern void __init free_bootmem_node (pg_data_t *pgdat, unsigned long addr, unsigned long size);
  59. extern unsigned long __init free_all_bootmem_node (pg_data_t *pgdat);
  60. extern void * __init __alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal);
  61. #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
  62. #define alloc_bootmem_node(pgdat, x) \
  63.     __alloc_bootmem_node((pgdat), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
  64. #define alloc_bootmem_pages_node(pgdat, x) \
  65.     __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
  66. #define alloc_bootmem_low_pages_node(pgdat, x) \
  67.     __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, 0)
  68. #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
  69.  
  70. extern unsigned long __initdata nr_kernel_pages;
  71. extern unsigned long __initdata nr_all_pages;
  72.  
  73. extern void *__init alloc_large_system_hash(const char *tablename,
  74.                         unsigned long bucketsize,
  75.                         unsigned long numentries,
  76.                         int scale,
  77.                         int flags,
  78.                         unsigned int *_hash_shift,
  79.                         unsigned int *_hash_mask,
  80.                         unsigned long limit);
  81.  
  82. #define HASH_HIGHMEM    0x00000001    /* Consider highmem? */
  83. #define HASH_EARLY    0x00000002    /* Allocating during early boot? */
  84.  
  85. /* Only NUMA needs hash distribution.
  86.  * IA64 is known to have sufficient vmalloc space.
  87.  */
  88. #if defined(CONFIG_NUMA) && defined(CONFIG_IA64)
  89. #define HASHDIST_DEFAULT 1
  90. #else
  91. #define HASHDIST_DEFAULT 0
  92. #endif
  93. extern int __initdata hashdist;        /* Distribute hashes across NUMA nodes? */
  94.  
  95.  
  96. #endif /* _LINUX_BOOTMEM_H */
  97.